home *** CD-ROM | disk | FTP | other *** search
/ Presentation Partner / Presentation Partner.iso / sstv1 / runtime / sstbase.mst < prev   
Text File  |  1994-03-02  |  10KB  |  321 lines

  1. ''**************************************************************************
  2. ''*                       SST Setup Script...
  3. ''**************************************************************************
  4.  
  5. ''*** DEFINE DEBUG  ''Define for script development/debugging
  6.  
  7. '$INCLUDE 'setupapi.inc'
  8.  
  9. '$INCLUDE 'msdetect.inc'
  10.  
  11. DECLARE FUNCTION InstallCarousel LIB "MSCUISTF.dll" ( DestDir$ ) AS INTEGER 
  12.  
  13. ''Dialog ID's
  14. CONST WELCOME       = 100
  15. CONST ASKQUIT       = 200
  16. CONST DESTPATH      = 300
  17. CONST EXITFAILURE   = 400
  18. CONST EXITQUIT      = 600
  19. CONST EXITSUCCESS   = 700
  20. CONST EXITRUNTIME   = 750
  21. CONST OPTIONS       = 800
  22. CONST APPHELP       = 900
  23. CONST BADPATH       = 6400
  24. '' @Update Me Total Size Requirements
  25.  
  26. ''Bitmap ID
  27. CONST LOGO = 1
  28.  
  29. GLOBAL DEST$        ''Default destination directory.
  30. GLOBAL OPTCUR$      ''Option selection from option dialog.
  31. GLOBAL FreeSpace&
  32. GLOBAL WinDir$        '' Stores Windows Directory
  33.  
  34. DECLARE SUB Install
  35. DECLARE SUB UpdateINIfiles
  36. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  37.  
  38.  
  39. INIT:
  40.     CUIDLL$ = "mscuistf.dll"            ''Custom user interface dll
  41.     HELPPROC$ = "FHelpDlgProc"          ''Help dialog procedure
  42.  
  43.     SetBitmap CUIDLL$, LOGO
  44.     SetTitle "SST Setup"
  45.     Temp$ = "SST Runtime Version 1.1" + CHR$(13) + "Copyright (C) 1993-94, Ask Me Multimedia, Inc."
  46.     SetAbout "Super Show & Tell", TEMP$
  47.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  48.     IF szInf$ = "" THEN
  49.         szInf$ = GetSymbolValue("STF_CWDDIR") + "SSTINF.INF"
  50.     END IF
  51.     ReadInfFile szInf$
  52.  
  53.     OPTCUR$ = "1"
  54. ''    DEST$ = "C:\SSTV1"
  55.     @Update Me Default Destination
  56.  
  57. '$IFDEF DEBUG
  58.     i% = SetSizeCheckMode(scmOnIgnore)    '' could use scmOff; def = scmOnFatal
  59.     WinDrive$ = MID$(GetWindowsDir, 1, 1)
  60.     IF IsDriveValid(WinDrive$) = 0 THEN
  61.         i% = DoMsgBox("Windows drive ('"+WinDrive$+"') is not a valid drive.", "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK)
  62.         GOTO QUIT
  63.     END IF
  64. '$ENDIF ''DEBUG
  65.  
  66.  
  67. WELCOME:
  68.     sz$ = UIStartDlg(CUIDLL$, WELCOME, "FInfoDlgProc", APPHELP, HELPPROC$)
  69.     IF sz$ = "CONTINUE" THEN
  70.         UIPop 1
  71.     ELSE
  72.         GOSUB ASKQUIT
  73.         GOTO WELCOME
  74.     END IF
  75.  
  76. ISWINDOWS31:
  77. ' Check Windows Version...
  78.     MajorVer% = GetWindowsMajorVersion()
  79.     MinorVer% = GetWindowsMinorVersion()
  80.  
  81.     IF MajorVer% < 3 OR (MajorVer% = 3 AND MinorVer% < 10) THEN
  82.     i% = DoMsgBox("SST requires Microsoft Windows version 3.10 or greater.  Please upgrade your version of Windows.", "Installation Problem", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  83.     END
  84.     END IF
  85.  
  86.  
  87. GETPATH:
  88.     SetSymbolValue "EditTextIn", DEST$
  89.     SetSymbolValue "EditFocus", "END"
  90. GETPATHL1:
  91.     sz$ = UIStartDlg(CUIDLL$, DESTPATH, "FEditDlgProc", APPHELP, HELPPROC$)
  92.     DEST$ = GetSymbolValue("EditTextOut")
  93.  
  94.     IF sz$ = "CONTINUE" THEN
  95.         IF IsDirWritable(DEST$) = 0 THEN
  96.             GOSUB BADPATH
  97.             GOTO GETPATHL1
  98.         END IF
  99.     DESTDRIVE$ = MID$(DEST$, 1, 1)
  100.         FreeSpace& = GetFreeSpaceForDrive(DEST$) 
  101.         IF FreeSpace& < SpaceNeeded& THEN
  102.         GOSUB MORESPACE
  103.             GOTO GETPATHL1
  104.         ENDIF
  105.         UIPop 1
  106.     ELSEIF sz$ = "REACTIVATE" THEN
  107.         GOTO GETPATHL1
  108.     ELSEIF sz$ = "BACK" THEN
  109.         UIPop 1
  110.         GOTO WELCOME
  111.     ELSE
  112.         GOSUB ASKQUIT
  113.         GOTO GETPATH
  114.     END IF
  115.  
  116.     WinDir$ = GetWindowsDir()
  117.     Install
  118.  
  119.     CursorState% = ShowWaitCursor()
  120.     ErrorCode% = InstallCarousel (Dest$)      ' Our Function to re-join split files and decompress if needed
  121.     UpdateINIfiles
  122.     RestoreCUrsor CursorState%
  123.     IF ErrorCode% THEN
  124.     ELSE
  125.        GOTO QUIT
  126.     END IF
  127.  
  128.     AutoDesk$ = GetIniKeyString( "WIN.INI", "AAPLAY Animation", "FullScreen" )
  129.     IF AutoDesk$ = "" THEN
  130.      CopyFile DEST$ + "\AAPLAY.DLL", WinDir$ + "SYSTEM\AAPLAY.DLL", cmoBackup, 0
  131.     WriteToLogFile "AAPLAY Animation not found in WIN.INI, copying AAPLAY.DLL"
  132.     ELSE
  133.     WriteToLogFile "Found AAPLAY Animation in WIN.INI - Checking for AAVGA.DLL and AAPLAY.DLL"
  134.     AAVGA$ = FindFileInTree("AAVGA.DLL", WinDir$)
  135.     WriteToLogFile "Search result for AAVGA.dll is |" + AAVGA$ + "|"
  136.     AAPLAY$ = FindFileInTree("AAPLAY.DLL", WinDir$)
  137.     WriteToLogFile "Search result for AAPLAY.dll is |" + AAPLAY$ + "|"
  138.     IF AAPLAY$ = "" THEN
  139.         ' Remove Section from INI file when AAPLAY.DLL not found.
  140.         i% = FRemoveIniSection ( "WIN.INI", "AAPLAY Animation", cmoForce)
  141.  
  142.          CopyFile DEST$ + "\AAPLAY.DLL", WinDir$ + "SYSTEM\AAPLAY.DLL", cmoBackup, 0
  143.         WriteToLogFile "Copied AAPLAY.DLL to WINDOWS\SYSTEM Directory"
  144.     ELSE
  145.         WriteToLogFile "Will not copy AAPLAY.DLL, found another version."
  146.     ENDIF
  147.     ENDIF
  148.     RemoveFile DEST$ + "\AAPLAY.DLL", cmoForce
  149.  
  150. GET_VFW_VERSION:
  151. WriteToLogFile "Checking Version of Video for Windows"
  152. MCIDriver$ = GetIniKeyString( "SYSTEM.INI", "MCI", "AVIVideo" )
  153.  
  154. IF MCIDriver$ = "" THEN
  155.     WriteToLogFile "Could not find Video For Windows ([MCI] in System.ini)"
  156.     GOSUB ALERTNEEDVFW
  157. ELSE
  158.     LookFor$ = WinDir$ + "System\" + MCIDriver$
  159.     WriteToLogFile "Checking Version of " + LookFor$
  160.     AVIVersion$ = GetVersionOfFile( LookFor$ )
  161.     WriteToLogFile "Version Found is " + AVIVersion$
  162.     LookFor$ = ""
  163. '    AVIMajor& = GetVersionNthField( AVIVersion$, 1)
  164.     AVIMinor& = GetVersionNthField( AVIVersion$, 2)
  165.     IF AVIMinor& < 10 THEN
  166.         GOSUB ALERTNEEDVFW 
  167.     ELSE
  168.         WriteToLogFile "Found good VFW, Version is: " + AVIVersion$
  169.     ENDIF
  170.     
  171. ENDIF
  172. CloseLogFile
  173.  
  174. QUIT:
  175.     ON ERROR GOTO ERRQUIT
  176.  
  177.     IF ERR = 0 THEN
  178.         dlg% = EXITRUNTIME
  179.     ELSEIF ERR = STFQUIT THEN
  180.         dlg% = EXITQUIT
  181.     ELSE
  182.         dlg% = EXITFAILURE
  183.     END IF
  184. QUITL1:
  185.     sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
  186.     IF sz$ = "REACTIVATE" THEN
  187.         GOTO QUITL1
  188.     END IF
  189.     UIPop 1
  190.  
  191.     END
  192.  
  193. ERRQUIT:
  194.     i% = DoMsgBox("Setup sources were corrupted, call (612) 531-0603!", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  195.     END
  196.  
  197.  
  198.  
  199. BADPATH:
  200.     sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
  201.     IF sz$ = "REACTIVATE" THEN
  202.         GOTO BADPATH
  203.     END IF
  204.     UIPop 1
  205.     RETURN
  206.  
  207.  
  208. MORESPACE:
  209.     Temp$ = "SST needs " + STR$(SpaceNeeded&) + " bytes to install." + CHR$(13)
  210.     Temp$ = Temp$ + "There is only " + STR$(FreeSpace&) +" bytes free."
  211.     i% = DoMsgBox( Temp$, "Not Enough Disk Space", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  212.     RETURN
  213.  
  214.  
  215. ASKQUIT:
  216.     sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
  217.  
  218.     IF sz$ = "EXIT" THEN
  219.         UIPopAll
  220.         ERROR STFQUIT
  221.     ELSEIF sz$ = "REACTIVATE" THEN
  222.         GOTO ASKQUIT
  223.     ELSE
  224.         UIPop 1
  225.     END IF
  226.     RETURN
  227.  
  228. ALERTNEEDVFW:
  229. ' Need to Install VFW 1.1 Runtime 
  230.     Msg$ = "IMPORTANT!" + CHR$(13) + CHR$(13)
  231.     Msg$ = Msg$ + "Don't forget to install the Video for Windows Runtime Version 1.1" + CHR$(13) + CHR$(13)
  232.     Msg$ = Msg$ + "This will insure that your Movies will play properly."
  233.     i% = DoMsgBox( Msg$, "Attention Installer!", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  234.     RETURN
  235.  
  236.  
  237. '**
  238. '** Purpose:
  239. '**     Builds the copy list and performs all installation operations.
  240. '** Arguments:
  241. '**     none.
  242. '** Returns:
  243. '**     none.
  244. '*************************************************************************
  245. SUB Install STATIC
  246.  
  247.     SrcDir$ = GetSymbolValue("STF_SRCDIR")
  248.  
  249.     CreateDir DEST$, cmoNone
  250.     OpenLogFile MakePath(DEST$, "LOGFILE.OUT"), 0
  251.  
  252.     WriteToLogFile ""
  253.     WriteToLogFile "  User chose as destination directory: '" + DEST$ + "'"
  254.     WriteToLogFile "  User chose option: '" + OPTCUR$ + "'"
  255.     WriteToLogFile ""
  256.  
  257.     AddSectionFilesToCopyList "Files", SrcDir$, DEST$
  258.  
  259.     CopyFilesInCopyList
  260.  
  261. END SUB
  262.  
  263. SUB UpdateINIfiles STATIC
  264. '' Update SST's INI file with installed paths.
  265.     INIFile$ = DEST$ + "\SST.INI"
  266.     CreateIniKeyValue INIFile$, "SST", "picturedir", DEST$, cmoOverwrite
  267.     CreateIniKeyValue INIFile$, "SST", "picturetype", "1", cmoOverwrite
  268.     CreateIniKeyValue INIFile$, "SST", "sounddir", DEST$, cmoOverwrite
  269.     CreateIniKeyValue INIFile$, "SST", "soundtype", "1", cmoOverwrite
  270.     CreateIniKeyValue INIFile$, "SST", "carouseldir", DEST$, cmoOverwrite
  271.     CreateIniKeyValue INIFile$, "SST", "userselectdir", DEST$, cmoOverwrite
  272.     CreateIniKeyValue INIFile$, "SST", "altered", "0", cmoOverwrite
  273.     CreateIniKeyValue INIFile$, "SST", "moviedir", DEST$, cmoOverwrite
  274.     CreateIniKeyValue INIFile$, "SST", "movietype", "2", cmoOverwrite
  275.  
  276. ' Disable MIDI warning message...
  277.     SYSIni$ = WinDir$ + "SYSTEM.INI"
  278.     CopyFile SYSIni$, WinDir$ + "SYSTEM.ASK", cmoOverwrite, 0
  279.     CreateIniKeyValue SysIni$, "mciseq.drv", "disablewarning", "true", cmoOverwrite
  280.  
  281. '' Add File Manager associations to WIN.INI file for Carousels.
  282. '    CopyFile WinDir$ + "WIN.INI", "WIN.ASK", cmoOverwrite, 0
  283. '    INIFile$ = WinDir$ + "WIN.INI"
  284. '    CreateIniKeyValue INIFile$, "Extensions", "sst", DEST$ + "\SST.EXE ^.sst", cmoOverwrite
  285. '    CreateIniKeyValue INIFile$, "Extensions", "car", DEST$ + "\SST.EXE ^.car", cmoOverwrite
  286.  
  287.     @Update Me Program Group
  288.     @Update Me Show Group
  289.  
  290.     UseIcon1$ = " , 1, 1, 1," + DEST$
  291.     UseIcon2$ = " , 0, 1, 1," + DEST$
  292.     @Update Me Program Item
  293.     @Update Me Runtime Item
  294.  
  295. ''    CloseLogFile
  296. END SUB
  297.  
  298.  
  299. '**
  300. '** Purpose:
  301. '**     Appends a file name to the end of a directory path,
  302. '**     inserting a backslash character as needed.
  303. '** Arguments:
  304. '**     szDir$  - full directory path (with optional ending "\")
  305. '**     szFile$ - filename to append to directory
  306. '** Returns:
  307. '**     Resulting fully qualified path name.
  308. '*************************************************************************
  309. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  310.     IF szDir$ = "" THEN
  311.         MakePath = szFile$
  312.     ELSEIF szFile$ = "" THEN
  313.         MakePath = szDir$
  314.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  315.         MakePath = szDir$ + szFile$
  316.     ELSE
  317.         MakePath = szDir$ + "\" + szFile$
  318.     END IF
  319. END FUNCTION
  320.  
  321.